﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using JA.Negocios;
using JA.Negocios.Cadastros;

namespace JA.Web.Apresentacao
{
    public partial class DetalheImovel : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                if (Request["idImovel"] != null)
                {
                    try
                    {
                        int idImovel = int.Parse(Request["idImovel"]);

                        ImovelVO imovelVO = ModelBO.getImovel(idImovel, null);
                        if (imovelVO != null)
                        {
                            ModelBO.getImovelXAreaComuns(imovelVO);
                            this.RepeaterAreaComuns.DataSource = imovelVO.areaComumVOs;
                            this.RepeaterAreaComuns.DataBind();

                            ModelBO.getImovelXCaracteristicas(imovelVO);
                            this.RepeaterCaracteristicas.DataSource = imovelVO.caracteristicaVOs;
                            this.RepeaterCaracteristicas.DataBind();
                        }


                        Dictionary<string, string> d = new Dictionary<string, string>();
                        if (imovelVO.areaUtil > 0) d.Add("Área Útil", String.Format("{0:n0}", imovelVO.areaUtil) + "m");
                        if (imovelVO.areaTotal > 0) d.Add("Área Total", String.Format("{0:n0}", imovelVO.areaTotal) + "m");
                        if (imovelVO.quartos > 0) d.Add("Quartos", String.Format("{0:n0}", imovelVO.quartos));
                        if (imovelVO.suites > 0) d.Add("Suítes", String.Format("{0:n0}", imovelVO.suites));
                        if (imovelVO.vagasGaragem > 0) d.Add("Vagas de garagem", String.Format("{0:n0}", imovelVO.vagasGaragem));
                        if (imovelVO.andares > 0) d.Add("Andares", String.Format("{0:n0}", imovelVO.andares));
                        if (imovelVO.unidAndar > 0) d.Add("Unidade por andar", String.Format("{0:n0}", imovelVO.unidAndar));
                        if (imovelVO.vlrCond > 0) d.Add("Valor condomínio ", "R$ " + String.Format("{0:n2}", imovelVO.vlrCond));
                        if (imovelVO.permuta) d.Add("Permuta?", (imovelVO.permuta ? "Sim" : "Não"));
                        if (imovelVO.vlrTotVda > 0 && imovelVO.areaUtil > 0) d.Add("Valor metro&sup2;", "R$ " + String.Format("{0:n2}", imovelVO.vlrTotVda / imovelVO.areaUtil));

                        this.RepeaterImovel.DataSource = d;
                        this.RepeaterImovel.DataBind();

                        Dictionary<string, string> c = new Dictionary<string, string>();
                        if (!string.IsNullOrEmpty(imovelVO.titulo)) c.Add("Titulo", imovelVO.titulo);
                        if (imovelVO.bairroVO.idBairro > 0) c.Add("Bairro", imovelVO.bairroVO.bairro);
                        string tipo = "";
                        if (imovelVO.tipoVO.idTipo > 0) { tipo = imovelVO.tipoVO.tipo; }
                        if (imovelVO.categoriaVO.idCategoria > 0) { tipo += " " + imovelVO.categoriaVO.categoria; }
                        tipo = tipo.Trim();
                        if (tipo.Length > 0) c.Add("Tipo", tipo);
                        if (imovelVO.vlrTotVda > 0) c.Add("Valor ", "Valor R$ " + String.Format("{0:n2}", imovelVO.vlrTotVda));
                        else c.Add("Valor ", "Valor sob consulta ");
                        c.Add("nada1", "");

                        this.RepeaterDetalhes.DataSource = c;
                        this.RepeaterDetalhes.DataBind();

                        ltlIdImovel.Text = imovelVO.idImovel.ToString();
                        ltlDesc.Text = imovelVO.descricao;

                        FotoBO fotoBO = new FotoBO();
                        List<imovelxfotos> imovelxfotosVO = fotoBO.RecuperaFotos(null, imovelVO.idImovel);

                        if (imovelxfotosVO != null)
                        {
                            this.ImageButton4.ImageUrl = "~/DownFoto.aspx?idImovelXFoto=" + imovelxfotosVO[0].IdImovelXFoto + "&type=large";
                            this.hfIdImovelXFoto.Value = imovelxfotosVO[0].IdImovelXFoto.ToString();

                            setBotoesNavegacao(idImovel);
                        }
                        else
                        {
                            this.ImageButton4.ImageUrl = "~/DownFoto.aspx?idImovelXFoto=-1&type=large";
                        }

                        this.RepeaterFotos.DataSource = imovelxfotosVO;
                        this.RepeaterFotos.DataBind();
                        
                    }
                    catch (Exception ex)
                    {
                    }
                }
            }
        }

        protected void changeImage(object sender, ImageClickEventArgs e)
        {
            int idImovelXFoto = int.Parse(((ImageButton)sender).CommandArgument);
            this.ImageButton4.ImageUrl = "~/DownFoto.aspx?idImovelXFoto=" + idImovelXFoto + "&type=large";
            this.hfIdImovelXFoto.Value = idImovelXFoto.ToString();

            setBotoesNavegacao();
        }

        protected void ButtonFotoClose_Click(object sender, EventArgs e)
        {
            this.PanelFoto.Visible = false;
        }
        protected void ButtonFoto_Click(object sender, EventArgs e)
        {
            try
            {
                int idImovelXFoto = int.Parse(this.hfIdImovelXFoto.Value);
                this.Image3.ImageUrl = "~/DownFoto.aspx?type=extralarge&idImovelXFoto=" + idImovelXFoto;
                this.Label2.Text = "Imovel " + ltlIdImovel.Text;
                this.PanelFoto.Visible = true;
            }
            catch (Exception ex) { }
        }

        protected void lbVoltar_Click(object sender, EventArgs e)
        {
            this.Response.Redirect("~/Default.aspx");
        }
        protected void btContatoClick(object sender, EventArgs e)
        {
            Util.WindowOpen(this, this.ltlIdImovel.Text);
        }

        private void setBotoesNavegacao(int? idImovel = null)
        {
            List<imovelxfotos> imovelxfotosVO = new FotoBO().RecuperaFotos(null, idImovel ?? Request["idImovel"].ToInt32());
            int indexImovelXFoto = (idImovel == null) ? this.hfIdImovelXFoto.Value.ToInt32() : imovelxfotosVO[0].IdImovelXFoto;

            int indexAtual = imovelxfotosVO.FindIndex(i => i.IdImovelXFoto == indexImovelXFoto);

            this.imgbFotoAnterior.Enabled = this.imgbFotoAnterior.Visible = (indexAtual != 0);
            this.imgbFotoSeguinte.Enabled = this.imgbFotoSeguinte.Visible = (indexAtual != imovelxfotosVO.Count - 1);

            if (this.imgbFotoAnterior.Enabled) this.imgbFotoAnterior.CommandArgument = imovelxfotosVO[indexAtual - 1].IdImovelXFoto.ToString();
            if (this.imgbFotoSeguinte.Enabled) this.imgbFotoSeguinte.CommandArgument = imovelxfotosVO[indexAtual + 1].IdImovelXFoto.ToString();
        }
    }
}
